home *** CD-ROM | disk | FTP | other *** search
/ HPAVC / HPAVC CD-ROM.iso / ROADS15.ARJ / FX.C < prev    next >
C/C++ Source or Header  |  1994-04-05  |  3KB  |  96 lines

  1. #define FX_C
  2.  
  3. #include <fastgraf.h> /* FOR PALETTE AND KEYHIT FUNCTIONS */
  4. #include "fx.h"
  5. #include "roads.h"    /* FOR ANIMATE FUNCTION  */
  6.  
  7. /* FX.C-specific DEFINITIONS */
  8. #define FADESTEPS 32     /* Number of gradations in the fade -- KEEP BELOW 256 */
  9. #define SETDACS_DELAY 0  /* Number of clock ticks to wait between gradations */
  10.  
  11. /****************************************************************************\
  12. *                                                                            *
  13. *  fade_in                                                                   *
  14. *                                                                            *
  15. *  Fade one or more DACs from black to their target colors.                  *
  16. *                                                                            *
  17. \****************************************************************************/
  18.  
  19. void fade_in (int DACstart, int DACend)
  20. {
  21.    register int j, i;
  22.    int k, n, temp;
  23.    char new_palette [VCOLORS*3]; /* Temporarily stores palette */
  24.    char key1, key2; /* USED FOR FOR KEYCHECK */
  25.  
  26.    if (DACend<DACstart) /* PREVENT start/end REVERSALS which could crash us */
  27.    {
  28.       temp=DACstart;
  29.       DACstart=DACend;
  30.       DACend=temp;
  31.    }
  32.  
  33.    for (i = 0; i <= FADESTEPS; i++)
  34.    {
  35.       if (abortfadeonkeyhit)
  36.       {
  37.         fg_intkey (&key1, &key2);
  38.         if (key1+key2>0) break;
  39.       }
  40.  
  41.       for (k=0, n=DACstart*3, j = DACstart; j <= DACend; j++)
  42.       {
  43.          new_palette[k++] = (long) (default_palette[n++] * i) / FADESTEPS;
  44.          new_palette[k++] = (long) (default_palette[n++] * i) / FADESTEPS;
  45.          new_palette[k++] = (long) (default_palette[n++] * i) / FADESTEPS;
  46.       }
  47.  
  48.       fg_setdacs (DACstart, DACend-DACstart+1, new_palette);
  49.       fg_waitfor (SETDACS_DELAY);
  50.       if (animatewhilefading) animate();
  51.    }
  52. }
  53.  
  54. /****************************************************************************\
  55. *                                                                            *
  56. *  fade_out                                                                  *
  57. *                                                                            *
  58. *  Fade one or more DACs from their current colors to black.                 *
  59. *                                                                            *
  60. \****************************************************************************/
  61.  
  62. void fade_out (int DACstart, int DACend)
  63. {
  64.    register int j, i;
  65.    int k, n, temp;
  66.    char new_palette [VCOLORS*3]; /* Temporarily stores palette */
  67.    char key1, key2; /* USED FOR FOR KEYCHECK */
  68.  
  69.    if (DACend<DACstart) /* PREVENT start/end REVERSALS */
  70.    {
  71.       temp=DACstart;
  72.       DACstart=DACend;
  73.       DACend=temp;
  74.    }
  75.  
  76.    for (i = FADESTEPS; i >= 0; i--)
  77.    {
  78.       if (abortfadeonkeyhit)
  79.       {
  80.         fg_intkey (&key1, &key2);
  81.         if (key1+key2>0) break;
  82.       }
  83.  
  84.       for (k=0, n=DACstart*3, j = DACstart; j <= DACend; j++)
  85.       {
  86.          new_palette[k++] = (long) (default_palette[n++] * i) / FADESTEPS;
  87.          new_palette[k++] = (long) (default_palette[n++] * i) / FADESTEPS;
  88.          new_palette[k++] = (long) (default_palette[n++] * i) / FADESTEPS;
  89.       }
  90.       fg_setdacs (DACstart, DACend-DACstart+1, new_palette);
  91.       fg_waitfor (SETDACS_DELAY);
  92.       if (animatewhilefading) animate();
  93.    }
  94. }
  95.  
  96.